The Cardinals have signed Allen Craig to a five-year, $31 million deal that could be worth $43 million over six seasons.

Craig gets $1.75 million this year, $2.75 million in 2014, $5.5 million in 2015, $9 million in 2016 and $11 million in 2017. St. Louis has a $13 million option for 2018 with a $1 million buyout.

The 28-year-old would have been eligible for salary arbitration next winter and for free agency after the 2016 season.

Craig is a career .300 hitter and became the team's primary first baseman last year after Lance Berkman got hurt.